package cn.wolfcode.p2p.business.service;

import cn.wolfcode.p2p.base.query.QueryObject;
import cn.wolfcode.p2p.business.domain.BidRequest;
import cn.wolfcode.p2p.business.query.BidRequestQuery;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 关于借款申请对象
 */
public interface IBidRequestService {
    /**
     * 申请借款
     * @param bidRequest 借款对象
     */
    void apply(BidRequest bidRequest);

    /**
     * 后台审核列表
     * @param qo
     * @return
     */
    PageInfo query(QueryObject qo);

    /**
     * 后台审核借款
     * @param id 借款id
     * @param state 审核状态
     * @param remark 备注
     * @param publishTime 发表时间
     */
    void publisAudit(Long id, Integer state, String remark, Date publishTime);

    /**
     * 查出所有待发标的
     */
    void publishBidRequestToQueue();

    /**
     * 每秒从缓冲中取待发标的,如果已经发标了,则从缓冲中移除
     */
    void checkPublishBidRequestforQueue();

    /**
     * 根据借款Id 查到借款对象
     * @param id
     * @return
     */
    BidRequest getById(Long id);

    /**
     * 投标
     * @param bidRequestId
     * @param amount
     */
    void bid(Long bidRequestId, BigDecimal amount);

    /**
     * 满标一审
     * @param id
     * @param state
     * @param remark
     */
    void fullAudit1(Long id, Integer state, String remark);
    /**
     * 满标二审
     * @param id
     * @param state
     * @param remark
     */
    void fullAudit2(Long id, Integer state, String remark);

    /**
     * 还款
     * @param id
     */
    void returnMoney(Long id);
}
